/**
 * 使用RSA秘钥生成工具生成一对公钥（A）和私钥（B），前端保留A，后端保留B。（可以配置默认后端生成RSA，也可以前端。建议开发时由后端生成，前端并向后端索要A公钥）
 * 前端发送数据时，先生成一串随机16位字符串作为AES的秘钥（C），然后使用A使用RSA算法对C进行加密，得到加密后的AES秘钥（D）。将要发送的数据（E）用C使用AES加密，得到密文（F）。将D和F一同发给后端进行处理。
 * 后端处理数据时，先用B对D使用RSA进行解密得到C，用C对F使用AES进行解密得到E
 */
import JSEncrypt from 'jsencrypt';
import { PUBLIC_RSA_KEY } from './index.js';
/**
 * 非对称加密，
 * 优点：安全性较高。
 * 缺点：加解密速度较慢，不适合对大量数据进行加密处理。
 * @param {*} data
 * @return
 */
export function encodeRSA(data) {
    //创建对象
    let encryptor = new JSEncrypt();
    //设置公钥
    encryptor.setPublicKey(PUBLIC_RSA_KEY);
    //返回加密后结果
    return encryptor.encrypt(data);
}

/**
 * 非对称解密，
 * 优点：安全性较高。
 * 缺点：加解密速度较慢，不适合对大量数据进行加密处理。
 * @param {*} data
 * @return
 */
export function decryptRSA(data) {
    let encryptor = new JSEncrypt();
    encryptor.setPrivateKey('');
    let result = encryptor.decrypt(data);
    if (typeof word === 'object') {
        result = encryptor.decrypt(JSON.stringify(data));
    }
    return result;
}